// 引入 vue 和 vuex
import Vue from 'vue'
import Vuex from 'vuex'

// 引入 Vuex 插件
Vue.use(Vuex)

// 将 home 相关的状态抽取为一个模块
const home = {
    state: { // 存放状态（共享的属性）
        count: 1
    },
    mutations: {
        // 增加的方法，改变state的状态值
        increment(state, n) {  // n 为载荷
            state.count += n   // state.count = state.count + n
        },
        // 自减
        decrement(state) {
            state.count--
        }
    },
    actions: {
        add(context, n) {
            // 触发 mutations 中的 increment 来改变 state
            context.commit('increment', n)
        },
        // 参数是一个对象，commit就是提交，state就是状态对象
        decrement({commit,state}) {
            console.log('actions.decrement.state.count ',state.count)
            commit('decrement')
        }
    },
    getters: { // 定义派生属性
        desc(state) {  // 类似于计算属性的个玩意儿,会监听count值
            // 这个state就是上面的state，他会自动的传进来
            if(state.count < 50){
                return '吃饭'
            } else if (state.count < 100){
                return '睡觉'
            } else {
                return '打豆豆'
            }
        }
    }
}

// 将 goods 相关的状态抽取为一个模块
const goods = {
    state: {},
    mutations: {},
    actions: {},
    getters: {}
}

// 创建一个仓库，用来存储对应的状态
const store = new Vuex.Store({
    modules: {
        home,   // home: home
        goods,
    }
})

// 导出Vuex对象
export default store


